#pragma once

#include <iostream>
#include <string>
#include <unistd.h>

using std::cout;
using std::endl;
using std::string;
using std::to_string;

string ops = "+-*/%";

class Task
{
public:
    Task()
    {
    }

    Task(int x, int y, char op) : _x(x), _y(y), _op(op), _ret(0), _exit_code(0)
    {
    }

    void operator()()
    {
        switch (_op)
        {
        case '+':
            _ret = _x + _y;
            break;
        case '-':
            _ret = _x - _y;
            break;
        case '*':
            _ret = _x * _y;
            break;
        case '/':
            _ret = _x / _y;
            break;
        case '%':
        {
            if (_y == 0)
            {
                _exit_code = -1;
            }
            else
            {
                _ret = _x % _y;
            }
            break;
        }
        default:
            break;

            usleep(100000);
        }
    }

    string formatArg()
    {
        return to_string(_x) + _op + to_string(_y) + '=';
    }

    string formatRes()
    {
        return to_string(_ret) + '(' + to_string(_exit_code) + ')';
    }

    ~Task()
    {
    }

private:
    int _x;
    int _y;
    char _op; // 运算符

    int _ret;
    int _exit_code; // 退出码
};